package uno.component;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JPanel;

/**
 * 
 * */
public class ColorViewer extends JPanel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3168914512927156833L;
	/**
	 * 
	 * */
	private Color currentColor;
	/**
	 * 
	 * */
	public ColorViewer(String color) {
		
		setCurrentColor(color);
		
		setVisible(true);
	}
	

	@Override
	public void paint(Graphics g) {
		
		super.paint(g);
		g.setColor(getCurrentColorObject());
		g.fillOval(0, 0, 50, 50);
	}


	/**
	 * Ritorna il colore corrente sotto forma di oggetto java.awt.Color. 
	 * 
	 * */
	public Color getCurrentColorObject() {
		return currentColor;
	}

	/**
	 * Ritorna il colore corrente sotto forma di stringa. Confrontabile con i valori
	 * statici forniti da CardValue.
	 * */
	public String getCurrentColorValue() {
		
		String color = null;
		final int rgbValue = getCurrentColorObject().getRGB();
		if(rgbValue == Color.GREEN.getRGB())	color = CardValue.GREEN;
		else if(rgbValue == Color.BLUE.getRGB())	color = CardValue.BLUE;
		else if(rgbValue == Color.YELLOW.getRGB())	color = CardValue.YELLOW;
		else if(rgbValue == Color.RED.getRGB())	color = CardValue.RED;

		return color;
	}
	
	@Override
	public Dimension getPreferredSize() {
		
		return new Dimension(50, 50);
	}


	/**
	 * Setta il colore da disegnare.
	 * */
	public void setCurrentColor(String color) {

		if(color.equals(CardValue.GREEN))	this.currentColor = new Color(Color.GREEN.getRGB());
		else if(color.equals(CardValue.BLUE))	this.currentColor =  new Color(Color.BLUE.getRGB());
		else if(color.equals(CardValue.YELLOW))	this.currentColor = new Color(Color.YELLOW.getRGB());
		else if(color.equals(CardValue.RED))	this.currentColor = new Color(Color.RED.getRGB());
		else System.out.println("WARNING: il colore passato al visualizzatore di colore non appartiene ai colori delle carte!");
		
		if(getGraphics() != null)
			update(getGraphics());
		validate();

	} 




}
